Object Oriented Programming systems and processes have been the subject of much investigation and interest in state of the art data processing environments. Object Oriented Programming is a computer program packaging technique which provides reusable and easily expandable programs. In contrast with known functional programming techniques which are not easily adaptable to new functional requirements and new types of data, object oriented programs are reusable and expandable as new requirements arise. With the ever increasing complexity of computer based systems, object oriented programming has received increased attention and investigation.
In an object oriented programming system, the primary focus is on data, rather than functions. Object oriented programming systems are composed of a large number of "objects". An object is a data structure and a set of operations or functions that can access that data structure. The data structure may be represented as a "frame". The frame has many "slots", each of which contains an "attribute" of the data in the slot. The attribute may be a primitive (i.e. an integer or string) or an Object Reference which is a pointer to another object's instance or instances (defined below). Each operation (function) that can access the data structure is called a "method".
FIG. 1 illustrates a schematic representation of an object in which a frame is encapsulated within its methods. FIG. 2 illustrates an example of an object, in which the data structure relates to employee data, and a number of methods surround this data structure. One method, for example, obtains the age of an employee. Each defined object will usually be manifested in a number of instances. Each instance contains the particular data structure for a particular example of the object. For example, an object for individual employee named Joyce Smith is an instance of the "employee" object.
Object oriented programming systems provide two primary characteristics which allow flexible and reusable programs to be developed. These characteristics are referred to as "encapsulation" and "inheritance". As may be seen from FIG. 1, the frame is encapsulated by its methods (functions). A wall of code has been placed around each piece of data. All access to the frame is handled by the surrounding methods. Data independence is thereby provided because an object's data structure is accessed only by its methods. Only the associated methods know the internal data structure. This ensures data integrity.
The "inheritance" property of object oriented programming systems allows previously written programs to be broadened by creating new superclasses and subclasses of objects. New objects are described by how they differ from preexisting objects so that entirely new programs need not be written to handle new types of data or functions.
FIG. 3 illustrates the inheritance property. For ease of illustration, the objects are illustrated as rectangles rather than as circles, with the object name at the top of a rectangle, the frame below the object name and the methods below the frame. Referring to FIG. 3, three object classes are illustrated for "salesperson", "employee" and "person", where a salesperson is a "kind of" employee, which is a "kind of" person. In other words, salesperson is a subclass of employee and employee is the superclass of salesperson. Similarly, employee is the subclass of person and person is the superclass of employee. Each class shown includes three instances. B. Soutter, W. Tipp and B. G. Blue are salespersons. B. Abraham, K. Yates and R. Moore are employees. J. McEnro, R. Nader and R. Reagan are persons. In other words, an instance is related to its class by an "is a" relation.
Each subclass "inherits" the frame and methods of its superclass. Thus, for example, a salesperson frame inherits age and hire date objects from the employee superclass as well as promote methods. Salesperson also includes a unique quota attribute and a pay commission method. Each instance can access all methods and frames of its superclass, so that, for example, B. G. Blue can be promoted.
In an object oriented system, a high level routine requests an object to perform one of its methods by sending the object a "message" telling the object what to do. The receiving object responds to the message by choosing the method that implements the message name, executing this method and then returning control to the calling high level routine, along with the results of the method.
It will be understood by those having skill in the art that an object oriented programming system typically runs on a data processor which includes volatile memory, i.e., memory which is erased or overwritten during when a session is terminated or when power is removed from the data processor, and nonvolatile memory such as direct access storage devices (DASD-disk files) or tape files in which data is permanently stored. The volatile memory is often referred to as Random Access Memory (RAM) or simply as "memory". The nonvolatile memory is often referred to as a "database". The term database, as used herein, refers to any physical, nonvolatile data storage medium, rather than to a particular database technology or product.
It will also be understood by those having skill in the art that object oriented programming systems include temporary objects, which are only used during a particular session and may be destroyed thereafter, and permanent objects which must survive a particular run time session for later use. Temporary objects are typically stored in RAM, while permanent objects must be stored in the database. Permanent objects are often called "persistent" objects.
In an object oriented programming system, persistent objects must be handled properly in order to ensure data integrity of the system. Although the existence of persistent objects in an object oriented programming system is well known, the art has heretofore not provided an interface for defining and handling persistent objects in an object oriented programming system. Heretofore, when an object was deemed to be persistent, special methods had to be developed and used, to read the object from and write the object to the database, in order to preserve database integrity. These special methods greatly increased the complexity of object oriented programming systems. Moreover, these special methods increased the likelihood that a persistent object was not handled properly, resulting in a loss of data integrity, because the user had to decide when to move the object into and out of the database.